namespace ext
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>Base Manager class - extended by ComponentMgr and PluginMgr</summary>
	/// <definedin>src\util\AbstractManager.js</definedin>
	[ScriptName("AbstractManager")]
	[ScriptNamespace("Ext")]
	[Imported()]
	public partial class AbstractManager
	{
		
		#region Properties
		/// <summary>Contains all of the items currently managed</summary>
		/// <definedin>src\util\AbstractManager.js</definedin>
		[ScriptName("all")]
		[IntrinsicProperty()]
		public ext.util.MixedCollection All
		{
			get
			{
				throw new System.Exception("Imported - not implemented");
			}
			set
			{
			}
		}
		#endregion
		
		#region Methods
		/// <summary>
		/// Returns a component by {@link Ext.Component#id id}.
		/// For additional details see {@link Ext.util.MixedCollection#get}.
		/// </summary>
		/// <definedin>src\util\AbstractManager.js</definedin>
		/// <param name="id">The component {@link Ext.Component#id id}</param>
		/// <returns>
		/// The Component, <c>undefined</c> if not found, or <c>null</c> if a
		/// Class was found.
		/// </returns>
		[ScriptName("get")]
		public ext.Component Get(string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Registers an item to be managed</summary>
		/// <definedin>src\util\AbstractManager.js</definedin>
		/// <param name="item">The item to register</param>
		[ScriptName("register")]
		public void Register(object item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Unregisters a component by removing it from this manager</summary>
		/// <definedin>src\util\AbstractManager.js</definedin>
		/// <param name="item">The item to unregister</param>
		[ScriptName("unregister")]
		public void Unregister(object item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Registers a new Component constructor, keyed by a new
		/// {@link Ext.Component#xtype}.  Use this method (or its alias {@link Ext#reg Ext.reg}) to register new
		/// subclasses of {@link Ext.Component} so that lazy instantiation may be used when specifying
		/// child Components.
		/// see {@link Ext.Container#items}
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;Registers a new Component constructor, keyed by a new
		/// {@link Ext.Component#xtype}.&lt;/p&gt;
		/// &lt;p&gt;Use this method (or its alias {@link Ext#reg Ext.reg}) to register new
		/// subclasses of {@link Ext.Component} so that lazy instantiation may be used when specifying
		/// child Components.
		/// see {@link Ext.Container#items}&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\util\AbstractManager.js</definedin>
		/// <param name="xtype">The mnemonic string by which the Component class may be looked up.</param>
		/// <param name="cls">The new Component class.</param>
		[ScriptName("registerType")]
		public void RegisterType(string xtype, System.Type cls)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Checks if a Component type is registered.</summary>
		/// <definedin>src\util\AbstractManager.js</definedin>
		/// <param name="xtype">The mnemonic string by which the Component class may be looked up</param>
		/// <returns>Whether the type is registered.</returns>
		[ScriptName("isRegistered")]
		public bool IsRegistered(ext.Component xtype)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Creates and returns an instance of whatever this manager manages, based on the supplied type and config object</summary>
		/// <definedin>src\util\AbstractManager.js</definedin>
		/// <param name="config">The config object</param>
		/// <param name="defaultType">If no type is discovered in the config object, we fall back to this type</param>
		/// <returns>The instance of whatever this manager is managing</returns>
		[ScriptName("create")]
		public object Create(object config, string defaultType)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Registers a function that will be called when a Component with the specified id is added to the manager. This will happen on instantiation.</summary>
		/// <definedin>src\util\AbstractManager.js</definedin>
		/// <param name="id">The component {@link Ext.Component#id id}</param>
		/// <param name="fn">The callback function</param>
		/// <param name="scope">The scope (<c>this</c> reference) in which the callback is executed. Defaults to the Component.</param>
		[ScriptName("onAvailable")]
		public void OnAvailable(string id, System.Delegate fn, object scope)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
	}
}
